Delegation, Composition and Aggregation 이해하기
· 약 6분
final 키워드를 공부하다가, 우연하게 발견한 좋은 글이 있어 소개를 할려고합니다. 모델링에 있어서의 Delegation(위임), Composition(구성) and Aggregation(집합?)의 차이점에 관한 글이구요. 원문의 링크를 걸어 둡니다. http://stackoverflow.com/questions/1384426/distinguishing-between-delegation-composition-and-aggregation-java-oo-design
첫번째 답변이 쉽게 잘 설명을 한 것같아. 저도 기억을 해둘 겸하여 번역과 함께 추가로 몇글자 적어 볼려고 합니다.
Composition의 개념
예로 집을 들어보자. 집안에는 여러개의 방들이 있고 이 방들은 집이 있어야 반드시 존재하게된다. 즉, 방은 혼자서 존재할 수 없고 집이라는 객체안에서 존재하는 것이다. 그리고 집이라는 객체가 생성될때 반드시 함께 생성되어야하고 반대로 집이라는 객체가 사라질때 함께 사라져야 하는 것이다. 이런 관계가 Composition이라고 할 수 있다. (*요약하면 Composition: A owns B) 예들 바탕으로 한번 방과 집간의 관계를 코드로 나타내면 아래와 같지 않을까 생각합니다.
public class Room{
Room(){
}
...
}
public class House{
private List<Room> rooms;
public House(int CountOfRoom){
rooms = new ArrayList<Room>();
for(int i=0;i<CountOfRoom;i++){
rooms .add(new Room());
}
}
...
}
